Cloud computing is a relatively new IT delivery model that is expected to grow significantly in at least the next decade. It allows specialized providers in the IT industry to offer their customers various types of services, ranging from Infrastructure-as-a-Service (IaaS), which offers remote access to computing resources such as virtual machines (VMs), and storage, to Software-as-a-Service (SaaS), which offers fully managed software functionality. These types of services allow labor, hardware, software and system management costs to be shared; they reduce overall costs and make such services more affordable for both individual and enterprise consumers. Cloud computing also allows a new generation of IT services to develop, which can be more easily integrated and delivered. More specifically, it significantly builds on the potential for both virtualization technology and broad scale automation to minimize delivery costs while maintaining a high quality of service.
Large cloud computing service providers, and IaaS providers in particular, tend to deliver their services out of multiple worldwide datacenters. Consequently, substantial collections of data must be made available on more than one datacenter, and therefore may need to be transferred between datacenters across the cloud architecture. A key type of such data collections is a VM image.
There are many scenarios under which a VM image may require transferring from one datacenter to another. For example, VM images may need to be transferred between datacenters in a public cloud where a service provider offers a new or updated catalog of base images; or where a client determines that a particular captured or snapshot image is needed for high availability. As a further example, VM images may require transferring where VM images are to be hosted on different cloud and/or hypervisor, such as when a customer decides to change service providers. As yet a further example, software developers may use a different datacenter, or a different cloud, for each of the development/testing, staging, and production phases of a DevOps process, and may therefore need VM images transferred from one datacenter/cloud to another. As a final example, VM images may require transferring between a customer's systems on a private cloud (for backup storage, or extended functionality) to a public cloud, in a hybrid cloud environment.
Crude or inefficient transfer methods, such as simply transferring all of a VM image's constituent data blocks, require a lot of time and bandwidth. As cloud computing environments and the size of VM images grow to meet demand, the efficient and optimal transfer of such data across the cloud becomes critical.
An intelligent, efficient, and cost-effective solution for transferring VM images across a cloud environment takes advantage of the significant degree of similarity typically seen across images in VM libraries. This similarity is due, in large part, to the fact that many software packages, such as operating system libraries, configuration settings, and in many cases, user data, are very similar across multiple VM images. It is therefore desirable to employ a solution that takes advantage of these similarities.